Skip to content

feat(console): deploy actions — + New fleet / + Add instance (slice 5/6) - #88

Merged
brettchien merged 1 commit into
mainfrom
feat/console-nav-slice-5-deploy-actions
Aug 18, 2026
Merged

feat(console): deploy actions — + New fleet / + Add instance (slice 5/6)#88
brettchien merged 1 commit into
mainfrom
feat/console-nav-slice-5-deploy-actions

Conversation

@brettchien

Copy link
Copy Markdown
Contributor

Slice 5/6 of console-navigation-ia ADR (#83) — usercron adr83-impl runbook, per §7.5.

What

  • + New fleet (Fleets screen, 7.2) and + Add instance (Fleet detail, 7.3) now open a deploy panel instead of rendering disabled stubs.
  • Both share the existing compose→preview→deploy engine (compose_library_get / compose_preview / deploy_provision), reused via compose.ts's already-exported pure helpers — not reimplemented.
  • + New fleet runs a net-new fleet-identity step first (name/region/profile/principal — 7.5.1), then the same compose form. + Add instance skips straight to compose, inheriting the fleet it was opened from (7.5.2, no identity step).
  • New src/fleetToml.ts (pure, unit-tested): text-level fleets.toml edits — append a member to an existing [fleet.<name>] block, or append a brand-new block. fleet_config_write has no partial-write primitive, so both flows read-modify-write the full file client-side, per the ADR's own note.
  • Failure handling matches 7.5.1/7.5.2: fleets.toml is only touched after a confirmed successful deploy_provision — never before or speculatively.
  • After a successful deploy, main.ts re-reads fleets.toml and either drills into the new fleet's detail screen or refreshes the active fleet's member filter in place.

Scoping note

Part C of the ADR also says Compose should drop its permanent top-level tab once deploy is action-driven. I left the existing Compose tab (library/template/overlay authoring) in place — the ADR doesn't say where that authoring surface goes once the tab is gone, and removing a working feature without a documented replacement seemed worse than leaving it dual-reachable for now. Flagging for the slice 7 self-review rather than guessing.

Verification

  • tsc --noEmit — clean
  • vitest run — 106/106 passing (9 new for fleetToml.ts, 2 updated/added in render.test.ts)
  • vite build — clean

🤖 Generated by Orca (ecs-claude), usercron adr83-impl.

ADR #83 §7.5: both entry points share the compose→preview→deploy engine
(compose_library_get/compose_preview/deploy_provision), reached as an
action from the Fleets (7.2) and Fleet detail (7.3) screens instead of
sitting behind a standing tab. + New fleet runs a net-new fleet-identity
step first (7.5.1); + Add instance skips straight to Compose, inheriting
the fleet it was opened from (7.5.2).

fleets.toml is only ever mutated after a confirmed successful provision
(new src/fleetToml.ts, pure text-level append — fleet_config_write has
no partial-write primitive, so both flows read-modify-write the full
file client-side, per the ADR).

The existing Compose tab (library authoring) is left in place — Part C
also calls for dropping it once deploy is action-driven, but where
template/overlay authoring moves to isn't decided in the ADR; punting
that to the slice 7 self-review rather than deleting a working surface
speculatively.
@brettchien
brettchien merged commit 3c9825c into main Aug 18, 2026
2 checks passed
@brettchien
brettchien deleted the feat/console-nav-slice-5-deploy-actions branch August 18, 2026 21:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant